package com.merelyb.util;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.collections4.CollectionUtils;

import java.util.List;

/**
 * json转换工具
 * Created by donghang on 15/11/3.
 */

public class JsonUtils {

    private static Gson gson = null;

    static{
        gson = new GsonBuilder()
                .serializeSpecialFloatingPointValues()
                .setDateFormat("yyyy-MM-dd HH:mm:ss")//日期时间格式
                .create();
    }

    /**
     * 传入对象转换成json对象
     * @param obj
     * @param <T>
     * @return
     */
    public static <T> String obj2Json(T obj){
        return gson.toJson(obj);
    }

    /**
     * 传入对象List转换成json数组对象
     * @param objs
     * @param <T>
     * @return
     */
    public static <T> String objs2Json(List<T> objs){
        if(CollectionUtils.isNotEmpty(objs)) {
            return gson.toJson(objs);
        }
        return null;
    }

    /**
     * json转换成对象
     * @param json
     * @return
     */
    public static <T> T json2Obj(String json, Class<T> obj){
        return gson.fromJson(json, obj);
    }

    /**
     * json转换成设定的对象
     * @param json 要转换的字符串
     * @param typeToken 转换类型，例如果想转换成list中存在user对象：new TypeToken<List<User>>(){}
     * @return
     */
    public static <T> T json2Objs(String json, TypeToken typeToken){
        return (T) gson.fromJson(json, typeToken.getType());
    }
}
